print("不懂科技就会落伍！每天进步一点点，今天量子钛又学习了Python的字符串方法，欢迎大神们指正错误！")
# [钛妹]: 钛哥，上次学了几个 “is” 开头的方法，感觉好好用！ 今天还有 “is” 家族的新成员吗？
# [钛哥]: 哈哈，钛妹， “is” 家族成员众多，个个身怀绝技！ 今天我们继续探索 “is” 家族，学习更多实用的检查方法！
# [钛妹]: `isnumeric()` 方法，上次学 `isdigit()` 的时候好像提到过，它比 `isdigit()` 更宽松，是吗？
# [钛哥]: 钛妹记忆力真棒！ `isnumeric()` 方法确实比 `isdigit()` 更宽松，它能识别更广泛的数值字符，
# [钛哥]: 包括 Unicode 中的各种数字、分数、罗马数字等等。 如果你需要更全面的数值判断，`isnumeric()` 是更好的选择。 让我们深入了解一下！
print("\n# [钛哥]:  `isnumeric()`  数值检查的“全能选手”，识别各种数值形式！")
string_example_numeric_true_digit = "12345" # 十进制数字
string_example_numeric_true_digit_unicode = "②" # 带圈数字
string_example_numeric_true_fraction = "½" # 分数
string_example_numeric_true_roman = "Ⅲ" # 罗马数字
string_example_numeric_false_alpha = "abc" # 字母
print(f"# 字符串 '{string_example_numeric_true_digit}' 是数值吗 (isnumeric)? {string_example_numeric_true_digit.isnumeric()}")
print(f"# 字符串 '{string_example_numeric_true_digit_unicode}' 是数值吗 (isnumeric)? {string_example_numeric_true_digit_unicode.isnumeric()}")
print(f"# 字符串 '{string_example_numeric_true_fraction}' 是数值吗 (isnumeric)? {string_example_numeric_true_fraction.isnumeric()}")
print(f"# 字符串 '{string_example_numeric_true_roman}' 是数值吗 (isnumeric)? {string_example_numeric_true_roman.isnumeric()}")
print(f"# 字符串 '{string_example_numeric_false_alpha}' 是数值吗 (isnumeric)? {string_example_numeric_false_alpha.isnumeric()}")
# [钛妹]:  `isnumeric()`  就像数值界的 “百科全书”，各种数值都认识！ 在处理用户输入或者需要识别不同数字形式时，`isnumeric()` 就派上大用场了！
# [钛妹]: `isprintable()` 方法，上次也学过了，它是检查可打印字符的。 但什么情况下会用到检查可打印字符呢？
# [钛哥]:  钛妹这个问题问得很好！  `isprintable()`  虽然看起来简单，但在处理文本数据，特别是涉及到文件读写、网络传输时，就非常重要了。
# [钛哥]: 有些特殊字符是不可打印的，如果在处理过程中不注意，可能会导致显示问题或者程序错误。  `isprintable()`  可以帮助我们过滤或处理这些不可打印字符。
# [钛妹]:  `isprintable()` 能再举个例子吗？我想更深入了解一下 
# [钛哥]: 当然！你看看这个，咱们试着过滤一下不可打印字符
text_with_control_chars = "This is a text with control characters: \n\t\r" # 包含换行符 \n, 制表符 \t, 回车符 \r
printable_text = "".join(c for c in text_with_control_chars if c.isprintable()) # 过滤不可打印字符
print(f"# 原始文本: '{text_with_control_chars}'") # 原始文本包含不可打印字符，显示可能不整齐
print(f"# 过滤不可打印字符后: '{printable_text}'") # 过滤后，只保留可打印字符，显示更清晰

# [钛哥]: 再看看这个例子，文件写入前的检查
filename = "output.txt"
data_to_write = "This is data to write to file.\nBut it also has some control characters.\t"

if all(c.isprintable() for c in data_to_write): # 检查所有字符是否可打印
    with open(filename, "w") as f:
        f.write(data_to_write)
    print(f"\n# [钛哥]:  例子 2: 文件写入前的检查")
    print(f"# 数据 '{data_to_write}'  全部是可打印字符，已成功写入文件 '{filename}'")
else:
    print(f"\n# [钛哥]:  例子 2: 文件写入前的检查")
    print(f"# 数据 '{data_to_write}' 包含不可打印字符，写入文件前可能需要处理!") 
# [钛妹]:  原来 `isprintable()`  在幕后默默守护着文本数据的“颜值”！ 过滤不可打印字符，让文本显示更友好，文件处理更安全！
# [钛妹]: 下一个函数是`isspace()` ，用于检查空白字符的，这个方法感觉比较简单，实际应用场景多吗？
# [钛哥]:  钛妹别看 `isspace()`  简单，它在实际应用中非常常见！  比如，在处理用户输入时，经常需要去除字符串开头和结尾的空白字符；  
# [钛哥]: 在文本分析时，可能需要统计文本中空白字符的数量；  或者在数据清洗时，需要判断字符串是否为空白字符串。  让我们看一些例子。
# 例子 1:  去除用户输入中的多余空白
user_input = "   用户  名  ：  钛妹   " # 用户输入可能包含多余空白
trimmed_input = user_input.strip() # 使用 strip() 去除两侧空白
print(f"# 用户原始输入: '{user_input}'")
print(f"# 去除两侧空白后: '{trimmed_input}'")

# 例子 2:  判断字符串是否为空白字符串
string1 = "   \t  \n  " # 全是空白字符
string2 = "" # 空字符串
string3 = "  hello  " # 包含非空白字符
print(f"# 字符串 '{string1}' 是空白字符串吗? {string1.isspace()}") # 是
print(f"# 字符串 '{string2}' 是空白字符串吗? {string2.isspace()}") # 否 (空字符串不是空白字符串)
print(f"# 字符串 '{string3}' 是空白字符串吗? {string3.isspace()}") # 否
# [钛妹]:  `isspace()`  虽然简单，但是用处真不少！  去除多余空白，判断空字符串，统计空白字符，都是很实用的功能！

# [钛哥]:  今天我们继续深入学习了三个常用的 `is` 开头的函数，钛妹你给大家总结一下吧
# [钛妹]: 好嘞！
print("# - `isnumeric()`:  检查是否全为数值 (更全面的数字识别)")
print("# - `isprintable()`:  检查是否全为可打印字符 (并学习了实际应用)")
print("# - `isspace()`:  检查是否全为空白字符 (并学习了实际应用)")
print("# [钛哥]:  `is` 家族的方法，虽然名字简单，但功能强大！ 掌握它们，可以让你的字符串处理代码更加严谨、高效！")

# [钛妹]: 怎么样朋友们？我总结的到位吗？你是不是感觉又进步了一点点？点赞关注不迷路！
print("好啦，这期内容到此结束，你是不是感觉又进步了一点点？点赞关注不迷路！")